package com.navicoa.e_libreria.datos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import com.navicoa.e_libreria.utiles.AsistenteDeConexion;

public class JDBCUsuarioDAO implements IUsuarioDAO{
	
	public TOUsuario getUsuario(String u) {
		
		Connection c = AsistenteDeConexion.getConexion();		
		String sql = "SELECT * FROM Usuario WHERE (usuario = ?) ";
		PreparedStatement stmt = null;
		ResultSet result = null;
		TOUsuario res = null;
		
		try {
			stmt = c.prepareStatement(sql);
			stmt.setString(1, u);
			
			result = stmt.executeQuery();
			
			if(result.next()){
				//Hay entrada
				res = new TOUsuarioImpl(	result.getInt("oid"),
											result.getString("dni"),
											result.getString("nombre"),
											result.getString("apellidos"),
											result.getString("usuario"),
											result.getString("pass"),
											result.getString("email"),
											result.getString("direccion"),
											result.getInt("cp"),
											result.getInt("telefono1"),
											result.getInt("telefono2"));
			}
			else{
				//No se encuentra nada
				res = new TOUsuarioImpl();
			}
			
		} catch (SQLException e) {
            System.out.println("Message: " + e.getMessage());
            System.out.println("SQLState: " + e.getSQLState());
            System.out.println("ErrorCode: " + e.getErrorCode());
        } finally {
            try {
                if (result != null) {
                    result.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
            }
        }
		
		return res;
	}

	public List<TOUsuario> getUsuarios() {
		Connection c = AsistenteDeConexion.getConexion();
		String sql = "SELECT * FROM Usuario";
		PreparedStatement stmt = null;
		ResultSet result = null;
		List<TOUsuario> res = new LinkedList<TOUsuario>();
		
		try {
			stmt = c.prepareStatement(sql);
			
			result = stmt.executeQuery();
			
			while(result.next()){
				//Hay entrada
				res.add(new TOUsuarioImpl(	result.getInt("oid"),
											result.getString("dni"),
											result.getString("nombre"),
											result.getString("apellidos"),
											result.getString("usuario"),
											result.getString("pass"),
											result.getString("email"),
											result.getString("direccion"),
											result.getInt("cp"),
											result.getInt("telefono1"),
											result.getInt("telefono2")));
			}
			
		} catch (SQLException e) {
            System.out.println("Message: " + e.getMessage());
            System.out.println("SQLState: " + e.getSQLState());
            System.out.println("ErrorCode: " + e.getErrorCode());
        } finally {
            try {
                if (result != null) {
                    result.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
            }
        }
		
		return res;
	}

}
